package rsj.api;

import java.io.File;
import java.io.IOException;
import java.net.InetAddress;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;

public class MainUtil {

    ////////////////////////////    FileUtil    /////////////////////////////

    public static List<File> getAllDirectoryFiles(String fileDir) {
        File file = new File(fileDir);
        return getAllFilesByFile(file);
    }

    public static List<File> getAllFilesByFile(File file) {
        List<File> fileList = new ArrayList<File>();

        File[] files = file.listFiles();// 获取目录下的所有文件或文件夹
        if (files == null) { // 如果目录为空，或者是文件
            return fileList;
        }
        // 遍历，目录下的所有文件
        for (File f : files) {
            if (f.isFile()) {
                fileList.add(f);
            } else if (f.isDirectory()) {
                fileList.addAll(getAllFilesByFile(f));
            }
        }
        return fileList;
    }

    ////////////////////////////    Number    /////////////////////////////
    /***
     *  true:already in using  false:not using
     * @param port
     */
    public static boolean isLocalPortUsing(int port){
        try {
            InetAddress theAddress = InetAddress.getByName("127.0.0.1");
            Socket socket = new Socket(theAddress,port);
            return true;
        } catch (IOException e) {
            return false;
        }
    }

    ////////////////////////////    NetUtil    /////////////////////////////

    public static boolean isInteger(String str) {
        Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$");
        return pattern.matcher(str).matches();
    }
}
